package com.data.config;

import com.data.job.StockDataQuartz;
import org.quartz.*;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * @Author Str
 * @Date 2022/2/17 0:08
 * @Description :定时任务配置文件
 */
@Configuration
public class QuartzConfiguration {
    // 间隔时间（分钟）
    private static final int interval = 1;

    // cron表达式，表示每天凌晨1点
    private static final String cron = "0 0 1 * * ?";

    // 使用建造者模式的JobBuilder来创建一个JobDetail对象。
    @Bean
    public JobDetail weatherDataSyncJobDetail() {
        return JobBuilder
                .newJob(StockDataQuartz.class)  // 指定job类，必须是继承了QuartzJobBean的类
                .withIdentity("StockDataQuartz")  // 标识唯一一个JobDetail，不传时默认设为”DEFAULT”
                .storeDurably()  // 在没有Trigger关联的情况下保存该任务到调度器
                .build();
    }

    @Bean
    public Trigger weatherDataSyncTrigger() {
        // 设为每天凌晨1点自动更新
        CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule(cron);

        // 每隔一分钟执行一次
//        SimpleScheduleBuilder scheduleBuilder = SimpleScheduleBuilder.simpleSchedule()
//                .withIntervalInMinutes(interval).repeatForever();

        return TriggerBuilder.newTrigger().forJob(weatherDataSyncJobDetail())
                .withIdentity("StockDataSyncTrigger").withSchedule(scheduleBuilder).build();
    }
}
